package com.shujia.day01;

/**
 *
 * 1 byte = 8 bit位  (每一个bit位上存储一个0、1值)
 * 1 kb = 1024b
 * 1 MB = 1024KB
 * 1 GB = 1024MB
 * 1 TB = 1024GB
 * 1 PB = 1024TB
 * 1 ZB = 1024PB
 * 1 YB = 1024ZB
 *
 * 机器值和真值
 *  机器值：00000000  => 最高位表示正负号 0表示正值  1表示负值 其他位置表示具体的值（真值）
 *  真值：100110
 *
 * 原码 反码 补码：
 *      原码：就是二进制定点表示法，即最高位为符号位，“0”表示正，“1”表示负，其余位表示数值的大小
 *      反码：正数的反码与其原码相同；负数的反码是对其原码逐位取反，但符号位除外
 *      补码：正数的补码与其原码相同；负数的补码是在其反码的末位加1
 *
 *      1   原码 => 00000001  反码 => 0 0000001   补码 =>   0 0000001
 *      -1  原码 => 10000001  反码 => 1 1111110   补码 =>   1 1111111
 *
 * 为什么需要 原码 反码 补码：
 *     1.原码实际上就是机器值，数据存储在机器中的形式
 *     2.反码 如果没有反码 那么拿 1和-1进行计算 实际就是原码计算  00000001 + 10000001 => 10000010 => -2 不正确
 *           如果有反码： 那么拿 1和-1进行计算  实际就是反码计算 0 0000001 + 1 1111110 => 11111111 (反码) => 再转成原码 1 0000000 => -0
 *     3.补码：
 *          如果有补码 那么拿 1和-1进行计算 实际就是补码进行计算  0 0000001 + 1 1111111 =>  0000 0000(补码) 转反码  =>  0 0000000(反码)  原码 =>  0 0000000(原码) => 0
 *          注意：如果由补码转反码 那么就拿当前的补码值 -1 就可以得到反码
 *          其中这个补码的作用就是为了去除 -0 存在的
 *
 * 计算如下值的 原码 反码 补码：
 *  7  => 111 => 0 0000111(原码) => 0 0000111(反码) =>  0 0000111(补码)
 * -7  => 111 => 1 0000111(原码) => 1 1111000(反码) =>  1 1111001(补码)
 *
 */
public class Code06Constant {
}
